// 为了保证全局只有一个定时任务，写的一个定时任务触发器
// 全局的定时器应该不多吧，我就直接一个数组搞定了哦
/*
*  event 数据格式
*  {
*     timeInterval:'', //触发事件间隔 --- 秒
*     preActiveTime: '', //上一次触发事件，--- 时间戳
*     cb: Function, //触发的的方法
*  }
* */
//

module.exports = function () {
  let timer = null;
  let events = [];
  return {
    stop(){
      window.clearInterval(timer);
      timer = null;
    },
    bind(timeInterval, cb){
      if (typeof(cb) != "function") {
        return;
      }
      events.push({
        timeInterval: timeInterval,
        cb: cb,
        preActiveTime: 0,
      });

      if (timer == null) {
        timer = window.setInterval(() => {
          let _timeStamp = new Date().getTime();
          console.log(_timeStamp)
          events.forEach(item => {
            if (_timeStamp - item.preActiveTime >= item.timeInterval * 1000) {
              item.preActiveTime = _timeStamp;
              item.cb();
            }
          })
        }, 1000);
      }
    },
    unbind(timeInterval, cb){
      if (typeof(cb) != "function") {
        return;
      }
      for (let i = 0; i < events.length; i++) {
        if (timeInterval == events[i].timeInterval && cb == events[i].cb) {
          events.splice(i, 1);
          if (events.length <= 0) {
            this.stop();
          }
          break;
        }
      }
    },
    getEvents(){
      return events;
    }
  };
}();
